package CapaLogica;
import CapaDatos.*;
import javax.swing.JOptionPane;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author Maria
 */
public class ComunicaPago {


/**
 * firma para calcular el monto que tiene que pagar el cliente a partir de
 * su tipo de cliente
 * @param elCliente objeto de tipo Cliente
 * @param fechaInicio fecha de inicio de la reserva
 * @param fechaFin fehca fin de la reserva
 * @return double, el monto que se debe pagar, y cero (0) si no se especifico el tipo de cliente
 */
 public double calcularMonto(Cliente elCliente, String fechaInicio, String fechaFin)
      {
      double monto = 0;
      String diaInicio="",diaFin="",mesInicio="",mesFin="",añoInicio="",añoFin="";
      String[] Inicio = fechaInicio.split("/");
      String[] Fin = fechaFin.split("/");

            diaInicio = Inicio[0];
            mesInicio = Inicio[1];
            añoInicio = Inicio[2];
            diaFin = Fin[0];
            mesFin = Fin[1];
            añoFin = Fin[2];

 if(elCliente.getTipoCliente()!= null)
 {
     if(elCliente.getTipoCliente().equals("Regular") == true)
       {
         monto = 2000;
         monto = generarMonto(monto,diaInicio,mesInicio,añoInicio,diaFin,mesFin,añoFin);
         return monto;
     }
     else
         if(elCliente.getTipoCliente().equalsIgnoreCase("Tercera Edad") == true)
           {
             monto = 570;
             monto = generarMonto(monto,diaInicio,mesInicio,añoInicio,diaFin,mesFin,añoFin);
             return monto;

           }
     else
         if(elCliente.getTipoCliente().equalsIgnoreCase("Menor De Edad") == true)
          return monto;
     else
         if(elCliente.getTipoCliente().equalsIgnoreCase("Estrella") == true)
            {
             monto = 2000;
             monto = generarMonto(monto,diaInicio,mesInicio,añoInicio,diaFin,mesFin,añoFin);
             monto = (monto* 80)/100; //20 por ciento de descuento..
             return monto;
            }
    }
 else
     JOptionPane.showMessageDialog(null, "No se especifico el tipo de cliente");
         return 0;

}

/**
  * firma que saca el numero de dias que estuvo en el hotel y saca el monto a pagar
  * @param Monto el monto total a pagar
  * @param diaInicio dia de inicio de la reserva
  * @param mesInicio mes de inicio de la reserva
  * @param añoInicio año de inicio de la reserva
  * @param diaFin dia de culmino de la reserva
  * @param mesFin mes de culmino de la reserva
  * @param añoFin año de culmino de la reserva
  * @return double, el monto total a pagar por los dias que estuvo en el hotel
  */
 public double generarMonto(double Monto, String diaInicio, String mesInicio, String añoInicio, String diaFin, String mesFin, String añoFin)
    {
           Monto = Monto* ((Integer.parseInt(diaFin) - Integer.parseInt(diaInicio)) + (Integer.parseInt(mesFin) - Integer.parseInt(mesInicio))*30 + (Integer.parseInt(añoFin) - Integer.parseInt(añoInicio))*365);
           if (Monto < 0)
           return Monto*-1;


       return Monto;

  }

  /**
  * firma para saber que tipo de cliente es el cliente
  * @param Year el año en que nacio el cliente
  * @return string, con el tipo de clinet (regular/tercera edad/menor de edad)
  */

  public String enviarTipoCliente(String Year){

        int edad = 0;

        edad = 2010 - Integer.parseInt(Year);


        if ((edad <= 60) && (edad >= 5))
            return "Regular";
        else if(edad > 60)
            return "Tercera Edad";
        else
            return "Menor De Edad";
     }

/**
 * firma para calcular el monto por cada invitado
 * @param elInvitado objeto de tipo Invitado
 * @param fechaInicio la fecha de incio de la reserva
 * @param fechaFin la fecha de fin de la reserva
 * @return double, el monto a pagar por cada invitado
 */
     public double calcularMontoInvitado(Invitado elInvitado, String fechaInicio, String fechaFin)
{

      double monto = 0;
      String tipoInvitado = ComunicaInvitado.calcularTipoInvitado(elInvitado.getFechaNac());
      String diaInicio="",diaFin="",mesInicio="",mesFin="",añoInicio="",añoFin="";
      String[] Inicio = fechaInicio.split("/");
      String[] Fin = fechaFin.split("/");

            diaInicio = Inicio[0];
            mesInicio = Inicio[1];
            añoInicio = Inicio[2];
            diaFin = Fin[0];
            mesFin = Fin[1];
            añoFin = Fin[2];


         if(tipoInvitado.equalsIgnoreCase("Regular"))
         {
           monto = 2000;
           monto = generarMonto(monto,diaInicio,mesInicio,añoInicio,diaFin,mesFin,añoFin);
         }
         if(tipoInvitado.equals("Menor De Edad"))
             monto = 0;
         if(tipoInvitado.equalsIgnoreCase("Tercera Edad"))
         {
             monto = 670;
             monto = generarMonto(monto,diaInicio,mesInicio,añoInicio,diaFin,mesFin,añoFin);
         }



 return monto;
}

}
